import { fetchLogin, fetchUserInfo } from '@/api/use.js'



// 这里就是action creator
// 这里写的是函数，但是调用时，他们的返回值就是一个action对象
// 然后给想要使用的dispatch(action)就完事了
// 写在这里是为了方便，但是在使用时，不仅有同步的，也有异步的

export function switchSize(payload) {
    return { type: "APP_SIZE", payload }
}

export function switchLang(payload) {
    return { type: "APP_LANG", payload }
}

export function switchColor(payload) {
    return { type: "APP_COLOR", payload }
}

//异步比较特殊，他返回的是一个函数，redux本身是没有处理异步action的能力
// 所以使用了thunk来进行处理
export function login(data) {
    return function(dispatch) {
        // 这里可以写异步代码,返回的这个函数就是一个派发的action,不过是异步的,所以交给thunk来处理
        // 在redux内执行异步操作
        fetchLogin(data).then(({ token }) => {
            if (token) {
                localStorage.setItem('token', token)
                dispatch({ type: "USER_LOGIN", payload: token })
            }
        })
    }
}


export function getInfo() {
    return function(dispatch) {
        // 这里可以写异步代码,返回的这个函数就是一个派发的action,不过是异步的,所以交给thunk来处理
        // 在redux内执行异步操作
        fetchUserInfo().then((res) => {
            // console.log('用户信息', res);
            if (res && res.roles) {
                dispatch({ type: "USER_INFO", payload: res })
            }
        })
    }
}


export function resetUser(payload) {
    return { type: "USER-RESET", payload: null }
}